package com.xjgc.webservice.ao.sap;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.xjgc.webservice.XParam;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * 接收SAP传入:全电票开票申请
 *
 * @author: 小逗号
 * @date: 2023-11-22
 * @description:
 * @since:
 */
@Data
@XStreamAlias("REQUEST_DATA")
public class QdfpKqsqAO extends XParam {
    @Override
    protected List<?> dataList() {
        return heardList;
    }


    @XStreamImplicit(itemFieldName = "head")
    private List<Head> heardList;

    @Data
    public static class Head implements Serializable {

        /**
         * 开票申请单编号
         */
        @XStreamAlias("KPSQD")
        @TableField(value = "KPSQD")
        private String kpsqd;
        /**
         * 开票申请单类型
         */
        @XStreamAlias("KPSQDLX")
        @TableField(value = "KPSQDLX")
        private String kpsqdlx;
        /**
         * 红字发票通知单编号
         */
        @XStreamAlias("HZFPTZDBH")
        @TableField(value = "HZFPTZDBH")
        private String hzfptzdbh;
        /**
         * 公司代码
         */
        @XStreamAlias("BUKRS")
        @TableField(value = "BUKRS")
        private String bukrs;
        /**
         * 利润中心
         */
        @XStreamAlias("PRCTR")
        @TableField(value = "PRCTR")
        private String prctr;
        /**
         * 网省标识
         */
        @XStreamAlias("WSBS")
        @TableField(value = "WSBS")
        private String wsbs;
        /**
         * 专普票类型
         */
        @XStreamAlias("KPLX")
        @TableField(value = "KPLX")
        private String kplx;
        /**
         * 购方标识
         */
        @XStreamAlias("GFBS")
        @TableField(value = "GFBS")
        private String gfbs;
        /**
         * 购方单位编码
         */
        @XStreamAlias("KUNNR")
        @TableField(value = "KUNNR")
        private String kunnr;
        /**
         * 购方单位名称
         */
        @XStreamAlias("NAME")
        @TableField(value = "NAME")
        private String name;
        /**
         * 购方单位税务登记号
         */
        @XStreamAlias("STCEG")
        @TableField(value = "STCEG")
        private String stceg;
        /**
         * 购方地址
         */
        @XStreamAlias("STREET")
        @TableField(value = "STREET")
        private String street;
        /**
         * 购方电话
         */
        @XStreamAlias("IPONE")
        @TableField(value = "IPONE")
        private String ipone;
        /**
         * 购方开户行
         */
        @XStreamAlias("BANAME")
        @TableField(value = "BANAME")
        private String baname;
        /**
         * 购方账号
         */
        @XStreamAlias("BANKN")
        @TableField(value = "BANKN")
        private String bankn;
        /**
         * 销售组织
         */
        @XStreamAlias("VKORG")
        @TableField(value = "VKORG")
        private String vkorg;
        /**
         * 销方银行账号
         */
        @XStreamAlias("BANKN_X")
        @TableField(value = "BANKN_X")
        private String banknX;
        /**
         * 销方单位名称
         */
        @XStreamAlias("NAME_X")
        @TableField(value = "NAME_X")
        private String nameX;
        /**
         * 销方税号
         */
        @XStreamAlias("STCEG_X")
        @TableField(value = "STCEG_X")
        private String stcegX;
        /**
         * 销方地址
         */
        @XStreamAlias("STREET_X")
        @TableField(value = "STREET_X")
        private String streetX;
        /**
         * 销方电话
         */
        @XStreamAlias("IPONE_X")
        @TableField(value = "IPONE_X")
        private String iponeX;
        /**
         * 销方开户行
         */
        @XStreamAlias("BANAME_X")
        @TableField(value = "BANAME_X")
        private String banameX;
        /**
         * 备注
         */
        @XStreamAlias("BEIZ")
        @TableField(value = "BEIZ")
        private String beiz;
        /**
         * 是否免税
         */
        @XStreamAlias("MS")
        @TableField(value = "MS")
        private String ms;
        /**
         * 是否出口退税
         */
        @XStreamAlias("CKTS")
        @TableField(value = "CKTS")
        private String ckts;
        /**
         * 是否软件
         */
        @XStreamAlias("SFRJ")
        @TableField(value = "SFRJ")
        private String sfrj;
        /**
         * 是否含税金额
         */
        @XStreamAlias("HS")
        @TableField(value = "HS")
        private String hs;
        /**
         * 税率(%)
         */
        @XStreamAlias("SL")
        @TableField(value = "SL")
        private String sl;
        /**
         * 含税单价
         */
        @XStreamAlias("PREIS")
        @TableField(value = "PREIS")
        private String preis;
        /**
         * 打印清单
         */
        @XStreamAlias("DYQD")
        @TableField(value = "DYQD")
        private String dyqd;
        /**
         * 对应蓝字发票代码(红字发票填写)
         */
        @XStreamAlias("FPDM")
        @TableField(value = "FPDM")
        private String fpdm;
        /**
         * 对应蓝字发票号码(红字发票填写)
         */
        @XStreamAlias("FPHM")
        @TableField(value = "FPHM")
        private String fphm;
        /**
         * FI 过帐的汇率
         */
        @XStreamAlias("KURRF")
        @TableField(value = "KURRF")
        private String kurrf;
        /**
         * 全电发票票种
         */
        @XStreamAlias("QDFPPZ")
        @TableField(value = "QDFPPZ")
        private String qdfppz;
        /**
         * 建筑项目名称
         */
        @XStreamAlias("JZXMMC")
        @TableField(value = "JZXMMC")
        private String jzxmmc;
        /**
         * 建筑服务发生地
         */
        @XStreamAlias("JZFWFSD")
        @TableField(value = "JZFWFSD")
        private String jzfwfsd;
        /**
         * 发生地详细地址
         */
        @XStreamAlias("FSDXXDZ")
        @TableField(value = "FSDXXDZ")
        private String fsdxxdz;
        /**
         * 跨地(市)标志
         */
        @XStreamAlias("KDSBZ")
        @TableField(value = "KDSBZ")
        private String kdsbz;
        /**
         * 土地增值税项目编号
         */
        @XStreamAlias("TDZZSXMBH")
        @TableField(value = "TDZZSXMBH")
        private String tdzzsxmbh;
        /**
         * 不动产地址
         */
        @XStreamAlias("BDCDZ")
        @TableField(value = "BDCDZ")
        private String bdcdz;
        /**
         * 不动产单元代码/网签合同备案编号
         */
        @XStreamAlias("BDCDYBM")
        @TableField(value = "BDCDYBM")
        private String bdcdybm;
        /**
         * 核定计税价
         */
        @XStreamAlias("HDJSJ")
        @TableField(value = "HDJSJ")
        private String hdjsj;
        /**
         * 实际成交金额
         */
        @XStreamAlias("SJCJJE")
        @TableField(value = "SJCJJE")
        private String sjcjje;
        /**
         * 产权证书/不动产权证号
         */
        @XStreamAlias("CQZS")
        @TableField(value = "CQZS")
        private String cqzs;
        /**
         * 面积单位
         */
        @XStreamAlias("MJDW")
        @TableField(value = "MJDW")
        private String mjdw;
        /**
         * 租赁期开始日期
         */
        @XStreamAlias("ZLQKS")
        @TableField(value = "ZLQKS")
        private String zlqks;
        /**
         * 租赁期截止日期
         */
        @XStreamAlias("ZLQJZ")
        @TableField(value = "ZLQJZ")
        private String zlqjz;
        /**
         * 不动产详细地址
         */
        @XStreamAlias("BDCXXDZ")
        @TableField(value = "BDCXXDZ")
        private String bdcxxdz;
        /**
         * 跨地(市)标志
         */
        @XStreamAlias("SFKS")
        @TableField(value = "SFKS")
        private String sfks;
        /**
         * 产权证书/不动产权证号
         */
        @XStreamAlias("CQZH")
        @TableField(value = "CQZH")
        private String cqzh;
        /**
         * 电子发票收票手机号
         */
        @XStreamAlias("SFSJH")
        @TableField(value = "SFSJH")
        private String sfsjh;
        /**
         * 电子发票收票邮箱
         */
        @XStreamAlias("SPYX")
        @TableField(value = "SPYX")
        private String spyx;
        /**
         * 创建者
         */
        @XStreamAlias("CREATE_USER")
        @TableField(value = "CREATE_USER")
        private String createUser;
        /**
         * 创建日期
         */
        @XStreamAlias("CREATE_DATE")
        @TableField(value = "CREATE_DATE")
        private String createDate;
        /**
         * 创建时间
         */
        @XStreamAlias("CREATE_TIME")
        @TableField(value = "CREATE_TIME")
        private String createTime;
        /**
         * 更改人
         */
        @XStreamAlias("MODIFY_USER")
        @TableField(value = "MODIFY_USER")
        private String modifyUser;
        /**
         * 修改日期
         */
        @XStreamAlias("MODIFY_DATE")
        @TableField(value = "MODIFY_DATE")
        private String modifyDate;
        /**
         * 修改时间
         */
        @XStreamAlias("MODIFY_TIME")
        @TableField(value = "MODIFY_TIME")
        private String modifyTime;

        @JsonProperty("itemDtosDtos")
        @XStreamImplicit(itemFieldName = "item")
        private List<Item> itemDtosDtos;
    }

    @Data
    public static class Item implements Serializable {

        /**
         * 开票申请单编号
         */
        @XStreamAlias("KPSQD")
        @TableField("KPSQD")
        private String kpsqd;
        /**
         * 开票申请单项目号
         */
        @XStreamAlias("BUZEI")
        @TableField("BUZEI")
        private String buzei;
        /**
         * 度量单位文本(最多10个字符)
         */
        @XStreamAlias("MSEHT")
        @TableField("MSEHT")
        private String mseht;
        /**
         * 销售订单号
         */
        @XStreamAlias("VBELN")
        @TableField("VBELN")
        private String vbeln;
        /**
         * 发票张数
         */
        @XStreamAlias("POSNR")
        @TableField("POSNR")
        private String posnr;
        /**
         * 销售组织
         */
        @XStreamAlias("VKORG")
        @TableField("VKORG")
        private String vkorg;
        /**
         * 合同号
         */
        @XStreamAlias("BSTKD")
        @TableField("BSTKD")
        private String bstkd;
        /**
         * 物料号
         */
        @XStreamAlias("MATNR")
        @TableField("MATNR")
        private String matnr;
        /**
         * 税收分类编码
         */
        @XStreamAlias("SSFLDM")
        @TableField("SSFLDM")
        private String ssfldm;
        /**
         * 物料描述（短文本）
         */
        @XStreamAlias("MAKTX")
        @TableField("MAKTX")
        private String maktx;
        /**
         * 规格型号
         */
        @XStreamAlias("SPEC")
        @TableField("SPEC")
        private String spec;
        /**
         * 基本计量单位
         */
        @XStreamAlias("MEINS")
        @TableField("MEINS")
        private String meins;
        /**
         * 以销售单位表示的累计订单数量
         */
        @XStreamAlias("MENGE")
        @TableField("MENGE")
        private String menge;
        /**
         * 含税金额
         */
        @XStreamAlias("DMBTR")
        @TableField("DMBTR")
        private String dmbtr;
        /**
         * 不含税金额
         */
        @XStreamAlias("DMBTR1")
        @TableField("DMBTR1")
        private String dmbtr1;
        /**
         * 发票税额
         */
        @XStreamAlias("FPSE1")
        @TableField("FPSE1")
        private String fpse1;
        /**
         * 含税单价
         */
        @XStreamAlias("PREIS")
        @TableField("PREIS")
        private String preis;
        /**
         * 发票代码
         */
        @XStreamAlias("FPDM")
        @TableField("FPDM")
        private String fpdm;
        /**
         * 发票号码
         */
        @XStreamAlias("FPHM")
        @TableField("FPHM")
        private String fphm;
        /**
         * 行项目折扣金额
         */
        @XStreamAlias("DMBTR2")
        @TableField("DMBTR2")
        private String dmbtr2;

        /**
         * 是否享受优惠 传“1\0”，
         * 1代表享受，0代表不享受
         */
        @JsonProperty(value = "policylogo")
        @XStreamAlias("POLICYLOGO")
        private String policyLogo = "";
        /**
         * 优惠政策内容
         * 免税\不征税\普通零税率
         */
        @JsonProperty(value = "policycontants")
        @XStreamAlias("POLICYCONTANTS")
        private String policyContants = "";
    }


}
